1. Field of the Invention
The present invention relates generally to delay locked loops (DLL) in a computer system, and more particularly, to a system and a method for achieving a programmable delay for a DLL system in a double-data-rate (DDR) memory interface.
2. Description of the Related Art
A typical computer system includes at least a microprocessor and some form of memory. During a program execution, the microprocessor of the computer system constantly needs to access data from the memory of the computer system. The memory of the computer system is normally classified as the internal memory located inside the microprocessor and the external memory located outside the microprocessor. When reading the data, the microprocessor normally checks its internal memory first. If the data required is not located inside the internal memory, the microprocessor will try to search the external memory for the data. After the data is found in the external memory, the data will be transferred from its external memory to its internal memory.
A double-data-rate (DDR) device is typically used as the memory interface between the internal memory and the external memory of the computer system. The DDR memory interface normally includes a DLL system that delays either a strobe or a data signal such that the data transferred from the external memory to the internal memory can be latched in the center of the data eye using the strobe as a clock signal. The DLL system consists of a plurality of DLLs, each of which is capable of generating a pre-defined delay.
More DLLs in a DLL system mean that the DLL system will require more space and consume more power, which is not desired in the modern computer system design. In addition, the fixed pre-defined delay generated by each DLL of the DLL system is hardly able to accommodate the DDR timing change requirement during the data transfer, because the DDR timing is usually process/voltage/temperature dependent.
In view of the foregoing, there is a need for a DLL system that can generate better throughput and a programmable delay for each DLL of the DLL system.